<?php

namespace app\admin\model;

use think\Model;
use fast\Tree;

class Autoplantempjson extends Model
{
    // 表名
    public $name = 'course_table_autoplan_temp_json';
    public $prefix_new = 'fa_';
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    // 定义时间戳字段名
    public $data;

    /**
     * 插入或更新数据
     * @param array $data 数据数组
     * @param array $uniqueColumns 唯一标识字段
     * @param bool $isUpdate 是否允许更新，true=允许更新，false=仅插入
     * @return int 返回记录ID
     */
    public function insertUpdate($data, $uniqueColumns, $isUpdate = true)
    {
        if (array_key_exists("0", $data)) {
            // 如果是多维数组，递归处理
            $lastId = null;
            foreach ($data as $key => $value) {
                $lastId = $this->insertUpdate($data[$key], $uniqueColumns, $isUpdate);
            }
            return $lastId;
        } else {
            // 构建查询条件
            $where = [];
            foreach ($uniqueColumns as $column) {
                if (isset($data[$column])) {
                    $where[$column] = $data[$column];
                } else {
                    // 可以根据实际情况处理错误，这里简单抛出异常
                    throw new \Exception("Unique column $column not found in data");
                }
            }

            // 先查询是否存在
            $record = $this->where($where)->find();
            if ($record) {
                if (!$isUpdate) {
                    // 如果不允许更新，直接返回现有记录ID
                    return $record->id;
                }
                // 存在则更新
                $record->save($data);
                $insertId = $record->id;
            } else {
                // 不存在则插入
                $record = $this->create($data);
                $insertId = $record->id;
            }
            return $insertId;
        }
    }

}